package com.spring.nio.util;

import com.spring.nio.common.BasicConstant;
import com.spring.nio.core.startup.BasicServer;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;

import java.io.File;

/**
 * @Auther: YSFY
 * @Date: 2020-10-03 13:33
 * @Pacage_name: com.alibaba.server.util
 * @Project_Name: net-server
 * @Description: 文件处理类
 */

@Slf4j
@SuppressWarnings("all")
public class FileUtil {

    /**
     * 根据当前服务处于的操作系统格式化文件路径分隔符
     *  windows 下 "/"和"\"都可以被识别
     *  linux 下只能识别"/"
     * @param filePath
     * */
    public static String formatFileSepartor(String filePath) {
        if(!BasicServer.getMap().get(BasicConstant.OS_NAME).toString().contains("Win")) {
            if(StringUtils.contains(filePath, "\\\\")) {
                System.out.println("转换由于windows系统导致的文件路径错误");
                return filePath.replace("\\\\", File.separator);
            }
        }

        return filePath;
    }

    /**
     * 根据文件大小 以及 文件发送字节数计算文件在线接收端进度条循环次数
     * @param fileSize
     * @return
     * */
    public static Long executeFileTransportLoopCount(Long fileSize) {
        long readSize = Integer.parseInt(NioUtil.getValue(BasicConstant.FILE_ONLINE_TRANSPORT_BYTE_BUFFER));
        long loopCount = 0;
        if(fileSize < readSize) {
            loopCount = 1;
        } else {
            // 总循环次数
            loopCount = fileSize / readSize;
            // 计算余数，如果余数大于0， 总循环次数 + 1
            long rest = fileSize % readSize;
            if(rest > 0) {
                loopCount = loopCount + 1;
            }
        }

        return loopCount;
    }
}
